part of '../animation.dart';

class Rotate extends StatelessWidget {
  /// Flutter官方的是弧度，而degree是角度，以360为一圈
  final double degree;
  // 旋转圆心的偏移
  final Offset originOffset;
  final Widget child;
  const Rotate({
    required this.degree,
    this.originOffset = Offset.zero,
    required this.child,
    super.key,
  });

  @override
  Widget build(BuildContext context) {
    // 第三步：旋转完毕之后，抵消原来的偏移
    return Transform.translate(
      offset: originOffset,
      // 第二步：进行旋转
      child: Transform.rotate(
        // 旋转的角度转换为弧度
        angle: degree * (pi / 180),
        // 第一步：由于旋转的圆心是不会移动的，所以我们需要先将物体往反方向移动
        child: Transform.translate(
          offset: Offset(-originOffset.dx, -originOffset.dy),
          child: child,
        ),
      ),
    );
  }
}
